/*
* ToolExpressionService.java
* Created on  202015/7/28 10:03
* 版本       修改时间          作者      修改内容
* V1.0.1    202015/7/28       panzhuowen    初始版本
*
*/

package com.infitecs.eyas.expression.service;

import com.infitecs.eyas.expression.dao.ExpressionDao;
import com.infitecs.eyas.expression.model.Formula;
import com.infitecs.eyas.session.SessionService;
import com.infitecs.eyas.session.model.Param;
import com.infitecs.eyas.util.*;
import com.infitecs.krill.ajax.response.AjaxResponse;
import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
import fr.expression4j.core.Catalog;
import fr.expression4j.core.Expression;
import fr.expression4j.core.Parameters;
import fr.expression4j.factory.ExpressionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpSession;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 * 类的描述信息
 *
 * @author panzhuowen
 * @version 1.0.1
 */
@Service("toolService")
public class ToolExpressionService {

    @Autowired
    private ExpressionDao expressionDao;

    @Autowired
    private SessionService sessionService;

    @Autowired
    private HttpSession httpSession;
    @Autowired
    private ExpressionService expressionService;

    private Map<String, Double> paramMap = new HashMap<>();

    private Map<String, Double> result = new HashMap<>();

    public Map<String, Double> getResult() {
        return result;
    }


    public void clearResultMap() {
        result.clear();
    }

    public void setResult(Map<String, Double> result) {
        this.result = result;
    }

    public Map<String, Double> getParamMap() {
        return paramMap;
    }

    public void setParamMap(Map<String, Double> paramMap) {
        this.paramMap = paramMap;
    }

    public void updateToolsParam(Object o) {
        Param param = (Param) o;
        paramMap.put("PI", Math.PI);
        paramMap.put(sessionService.getE() + param.getParamName(), param.getParamValue());
        httpSession.setAttribute("toolMap", paramMap);
    }

    public boolean hasParamValue(String paramName) {
        return paramMap.get(sessionService.getE() + paramName) != null;
    }

    public void clearMap() {
        paramMap = new HashMap<>();
        httpSession.setAttribute("toolMap", paramMap);
    }

    public Double calculate(String expressionName) {
        Double rs;
        rs = dealSpecialCalculate(expressionName);
        if (rs != null) {
            paramMap.put(expressionName, rs);
            return rs;
        }
        Formula formula = expressionDao.getFormulaByName(expressionName);
        if (null == formula) {
            return null;
        }
        String[] elementList = ExpressionUtil.getInstance().param(formula.getFormulaDescription()).split(",");
        //步骤二、
        Set<Parameter> parameters = getFormulaParameter(elementList);
        //求参失败！直接返回null
        if (null == parameters)
            return null;
        rs = getFormulaValue(formula, parameters);
        paramMap.put(expressionName, rs);
        return rs;
    }

    private Set<Parameter> getFormulaParameter(String[] elementList) {
        Set<Parameter> parameters = new HashSet<>();
        for (String ex : elementList) {
            //避免split()函数结果包含空串，如果想屏蔽无关变量也可以写在里面
            if ("".equals(ex))
                continue;
            //情况一：求参数的时候默认先从session当中拿，但是调用函数的时候都用大名（意思是包含前缀）
            String paramName = ('E' == ex.charAt(0) ? sessionService.getE() : "") + ex;
            Double value = paramMap.get(paramName);
            //情况二：发现找不到，就调用计算逻辑，向下运算
            if (null == value) {
                //当开头是E的加上公式前缀，进行公式求解
                value = calculate(paramName);
            }
            //情况三：如果结果还是null的话，就快点出去
            if (null == value) {
                return null;
            } else {
                parameters.add(new Parameter(ex, value));
            }
        }
        return parameters;
    }

    private Double getFormulaValue(Formula formula, Set<Parameter> set) {
        Double er = null;
        //添加自定义公式
        Catalog catalog = ExpressionFactory.createCatalog("catalog");
        catalog.addExpression(new Functions.ATANS());
        catalog.addExpression(new Functions.DEGREE());
        catalog.addExpression(new Functions.LOG());
        catalog.addExpression(new Functions.LOGFUN());
        catalog.addExpression(new Functions.LOG10FUN());
        catalog.addExpression(new Functions.EXPFUN());
        catalog.addExpression(new Functions.SQRTFUN());
        catalog.addExpression(new Functions.SINFUN());
        try {

            Expression expression = ExpressionFactory.createExpression(formula.getParamer() + formula.getFormulaDescription(), catalog);
            Parameters parameters = ParametersUtil.getParameters(set);
            er = DoubleUtil.getInstance().get4Double(expression.evaluate(parameters).getRealValue());

        } catch (Exception e) {
            e.printStackTrace();
        }
        return er;
    }


    private Double dealSpecialCalculate(String expressionName) {
        switch (expressionName) {
            case "TE8":
                return calculateTE8();
            case "TE15":
                return calculateTE15();
            case "TE16":
                return calculateTE16();
            case "TE17":
                return calculateTe17();
            case "TE20":
                return calculateTe20();
            case "TE23":
                return calculateTE23();
            case "TE45":
                return calculateTE45();
            case "TE46":
                return calculateTE46();
            case "TE47":
                return calculateTE47();
            case "TE43":
                return calculateTE43();
            case "TE44":
                return calculateTE44();
            case "TE35":
                return calculateTE35();
            case "TE34":
                return calculateTE34();
            case "TE36":
                return calculateTe36();
            case "TE37":
                return calculateTE37();
            case "TE38":
                return calculateTE38();
            case "TE48":
                return calculateTE48();
            case "TE57":
                return calculateTE57();
            case "TE55":
                return calculateTE55();
            case "TE54":
                return calculateTE54();
            case "TE73":
                return calculateTE73();
            case "TE72":
                return calculateTE72();
            case "TE74":
                return calculateTE74();
            case "TE66":
                return calculateTE66();
            case "TE64":
                return calculateTE64();
            case "TE63":
                return calculateTE63();
            case "TE97":
                return calculateTE97();
            case "TE99":
                return calculateTE99();
            case "TE100":
                return calculateTE100();
            case "TE101":
                return calculateTE101();
            case "TE103":
                return calculateTE103();
            case "TE104":
                return calculateTE104();
            case "TE110":
                return calculateTE110();
            case "TE120":
                return calculateTE120();
            case "TE127":
                return calculateTE127();
            case "TE126":
                return calculateTE126();
            case "TE122":
                return calculateTE122();
            case "TE132":
                return calculateTE132();
            case "TE114":
                return calculateTE114();
            case "TE115":
                return calculateTE115();
            case "TE134":
                return calculateTE134();
            case "TE138":
                return calculateTE138();
            case "TE139":
                return calculateTE139();
            case "TE140":
                return calculateTE140();
            case "TE145":
                return calculateTE145();
            case "TE149":
                return calculateTE149();
            case "TE150":
                return calculateTE150();
            case "TE155":
                return calculateTE155();
            case "TE159":
                return calculateTE159();
            case "TE160":
                return calculateTE160();
            case "TE164":
                return calculateTE164();
            case "TE170":
                return calculateTE170();
            case "TE178":
                return calculateTE178();
            case "TE185":
                return calculateTE185();
            case "TE188":
                return calculateTE188();
            case "TE192":
                return calculateTE192();
            case "TE199":
                return calculateTE199();
            case "TE204":
                return calculateTE204();
            case "TE205":
                return calculateTE205();
            case "TE209":
                return calculateTE209();
            case "TE214":
                return calculateTE214();
            case "TE233":
                return calculateTE233();
            case "TE232":
                return calculateTE232();
            case "TE240":
                return calculateTE240();
            case "TE246":
                return calculateTE246();
            case "TE247":
                return calculateTE247();
            case "TE248":
                return calculateTE248();
            default:
                break;
        }
        return null;
    }

    private Double calculateTE74() {
        Double E74 = 0.0;
        paramMap.put("TE74", E74);
        return E74;
    }

    private Double calculateTE73() {
        Double E73 = calculate("TE56");
        paramMap.put("TE73", E73);
        return E73;
    }

    private Double calculateTE72() {
        Double E72 = calculateTE55();
        paramMap.put("TE72", E72);
        return E72;
    }

    private Double calculateTE66() {
        Double E66 = calculateTE37();
        paramMap.put("TE66", E66);
        return E66;
    }

    private Double calculateTE65() {
        Double E65 = calculateTE37();
        paramMap.put("TE65", E65);
        return E65;
    }

    private Double calculateTE64() {
        Double E64 = calculateTe36();
        paramMap.put("TE64", E64);
        return E64;
    }

    private Double calculateTE63() {
        Double er = null;
        Double E32 = paramMap.get("TE32");
        Double E17 = paramMap.get("TE17");
        Double E58 = paramMap.get("TE58");
        Double aa;
        if (0.05 <= E32 / E17 && E32 / E17 <= 0.5) {
            aa = 0.155 * Math.pow((E32 / E17), -0.595);
        } else {
            aa = -1.0;
        }
        Double bb;
        Double E4 = paramMap.get("TE4");
        Double E5 = paramMap.get("TE5");
        Double E6 = paramMap.get("TE6");
        if (E4 == 1 || E5.equals(E6)) {
            bb = 1.0;
        } else {
            bb = calculate("TE38_2");
        }
        Double cc;
        Double E18 = paramMap.get("TE18");
        Double E16 = paramMap.get("TE16");
        Double E21 = paramMap.get("TE21");
        Double E22 = paramMap.get("TE22");
        Double E23 = paramMap.get("TE23");
        Double ee = E32 / E17;
        Double ff = E18 / E16;
        if (0.5 <= (ee) && (ee) <= 0.55 && 0 < (ff) && (ff) <= 0.001 && E21 > 40000) {
            cc = calculate("TE38_3");
        } else if ((ee) > 0.55 && 40000 < E21 && E21 < 200000 && 0 < (ff) && (ff) <= 0.001) {
            cc = E23 / E22;
        } else if ((ee) > 0.55 && E21 > 200000 && 0 < (ff) && (ff) <= 0.001) {
            cc = calculate("TE38_4");
        } else if ((ee) > 0.55 && E21 > 40000 && (ff) > 0.001) {
            cc = 2.0;
        } else {
            cc = 1.0;
        }
        Double dd;
        if (E21 > 200000) {
            dd = 1.0;
        } else {
            dd = 64 * E22;
        }
        Double E61 = paramMap.get("TE61");
        if (aa != -1.0) {
            Double a = Math.pow(aa * bb * cc * dd, -1);
            Double b = -(2.3 * Math.log(a));
            Double c = b / (E58 / E5);
            //er = Math.exp(b) / (E58 / E5);
            er = Math.exp(c);
        }
        paramMap.put("TE63", er);
        return er;
    }

    private Double calculateTE57() {
        Double E57 = 0.0;
        paramMap.put("TE57", E57);
        return E57;
    }

    private Double calculateTE55() {
        Double E55;
        Double E16 = paramMap.get("TE16");
        Double E18 = paramMap.get("TE18");
        Double E21 = paramMap.get("TE21");
        DecimalFormat df = new DecimalFormat();
        df.setMaximumFractionDigits(5);
        Double aa = (E18 / E16);
        String aaa = df.format(aa);
        Double a = Double.valueOf(aaa).doubleValue();
        // Long a = (long)(E18/E16);
        if ((E21 * 0.001) >= 3 && (E21 * 0.001) <= 40) {
            E55 = 1.0;
        } else if ((E21 * 0.001) > 40 && 0 < a && a <= 0.001) {
            E55 = 1 + 500 * E18 / E16;
        } else {
            E55 = 1.5;
        }
        paramMap.put("TE55", E55);
        return E55;
    }

    private Double calculateTE54() {
        Double E54;
        Double E4 = paramMap.get("TE4");
        Double E5 = paramMap.get("TE5");
        Double E6 = paramMap.get("TE6");
        if (E4 == 1) {
            E54 = 0.97;
        } else {
            E54 = 0.97 - 0.13 * Math.log(E6 / E5);
        }
        paramMap.put("TE54", E54);
        return E54;
    }

    private Double calculateTE48() {
        Double E48 = calculate("TE39");
        paramMap.put("TE48", E48);
        return E48;
    }

    private Double calculateTE47() {
        Double E47 = calculateTE38();
        paramMap.put("TE47", E47);
        return E47;
    }

    private Double calculateTE46() {
        Double E46 = calculateTE37();
        paramMap.put("TE46", E46);
        return E46;
    }

    private Double calculateTE45() {
        Double E45 = calculateTe36();
        paramMap.put("TE45", E45);
        return E45;
    }

    private Double calculateTE38() {
        Double E38;
        Double E21 = paramMap.get("TE21");
        Double E22 = paramMap.get("TE22");
        if (E21 > 200000) {
            E38 = 1.0;
        } else {
            E38 = 64 * E22;
        }
        paramMap.put("TE38", E38);
        return E38;
    }

    private Double calculateTE37() {
        Double E37;
        Double E16 = paramMap.get("TE16");
        Double E17 = paramMap.get("TE17");
        Double E18 = paramMap.get("TE18");
        Double E21 = paramMap.get("TE21");
        Double E32 = paramMap.get("TE32");
        Double E23 = paramMap.get("TE23");
        Double E22 = paramMap.get("TE22");
        if (0.5 <= E32 / E17 && E32 / E17 <= 0.55 && 0 < (E18 / E16) && (E18 / E16) <= 0.001 && E21 > 40000) {
            E37 = 1 + 500 * E18 / E16;
        } else if (E32 / E17 > 0.55 && 40000 < E21 && E21 < 200000 && 0 < E18 / E16 && E18 / E16 <= 0.001) {
            E37 = E23 / E22;
        } else if (E32 / E17 > 0.55 && E21 > 200000 && 0 < E18 / E16 && E18 / E16 <= 0.001) {
            E37 = 1 + 1000 * E18 / E16;
        } else if (E32 / E17 > 0.55 && E21 > 40000 && E18 / E16 > 0.001) {
            E37 = 2.0;
        } else {
            E37 = 1.0;
        }
        paramMap.put("TE37", E37);
        return E37;
    }

    private Double calculateTE44() {
        Double E44;
        Double E32 = paramMap.get("TE32");
        Double E17 = paramMap.get("TE17");
        if (0.05 <= E32 / E17 && E32 / E17 <= 0.5) {
            E44 = calculate("TE44_1");
        } else {
            E44 = null;
        }
        paramMap.put("TE44", E44);
        return E44;
    }

    private Double calculateTe36() {
        Double E36;
        Double E4 = paramMap.get("TE4");
        Double E5 = paramMap.get("TE5");
        Double E6 = paramMap.get("TE6");
        if (E4 == 1 || E5 == E6) {
            E36 = 1.0;
        } else {
            E36 = calculate("TE36_1");
        }
        paramMap.put("TE36", E36);
        return E36;
    }

    private Double calculateTE43() {
        Double E43 = calculateTE34();
        paramMap.put("TE43", E43);
        return E43;
    }

    private Double calculateTE34() {
        Double E34;
        Double E31 = paramMap.get("TE31");
        if (E31 <= 70) {
            E34 = calculate("TE34_1");
        } else if (E31 >= 100) {
            E34 = calculate("TE34_2");
        } else {
            E34 = 1.0;
        }
        paramMap.put("TE34", E34);
        return E34;
    }

    private Double calculateTE35() {
        Double E35;
        Double E32 = paramMap.get("TE32");
        Double E17 = paramMap.get("TE17");
        if (E32 / E17 > 0.5 && E32 / E17 <= 1) {
            E35 = calculate("TE35_1");
        } else if (E32 / E17 > 1) {
            E35 = calculate("TE35_2");
        } else {
            E35 = null;
        }
        paramMap.put("TE35", E35);
        return E35;
    }

    private Double calculateTE185() {
        Double E185;
        Double E15 = paramMap.get("TE15");
        Double E164 = paramMap.get("TE164");
        if (E164 == null)
            E164 = calculate("TE164");
        Double E170 = paramMap.get("TE170");
        if (E170 == null)
            E170 = calculate("TE170");
        Double E172 = paramMap.get("TE172");
        if (E172 == null)
            E172 = calculate("TE172");
        Double E178 = paramMap.get("TE178");
        if (E178 == null)
            E178 = calculate("TE178");
        Double E179 = paramMap.get("TE179");
        if (E179 == null)
            E179 = calculate("TE179");
        Double E181 = paramMap.get("TE181");
        if (E181 == null)
            E181 = calculate("TE181");
        E185 = (1 + Math.pow(E181 / E15, 2) - 2 * E170 / E164 * Math.pow(E172 / E15, 2) - 2 * Math.cos(E179 * Math.PI / 180) * E178 / E164 * Math.pow(E181 / E15, 2)) / Math.pow(E181 / E15, 2);
        paramMap.put("TE185", E185);
        return E185;
    }

    private Double calculateTE188() {
        Double E185;
        Double E10 = paramMap.get("TE10");
        Double E15 = paramMap.get("TE15");
        Double E164 = paramMap.get("TE164");
        if (E164 == null)
            E164 = calculate("TE164");
        Double E170 = paramMap.get("TE170");
        if (E170 == null)
            E170 = calculate("TE170");
        Double E172 = paramMap.get("TE172");
        if (E172 == null)
            E172 = calculate("TE172");
        Double E178 = paramMap.get("TE178");
        if (E178 == null)
            E178 = calculate("TE178");
        Double E179 = paramMap.get("TE179");
        if (E179 == null)
            E179 = calculate("TE179");
        Double E180 = paramMap.get("TE180");
        if (E180 == null)
            E180 = calculate("TE180");
        Double E181 = paramMap.get("TE181");
        if (E181 == null)
            E181 = calculate("TE181");
        E185 = (1 + Math.pow(E172 / E15, 2) - 2 * E170 / E164 * Math.pow(E172 / E15, 2) - 2 * Math.cos(E179 * Math.PI / 180) * E178 / E164 * Math.pow(E181 / E15, 2)) / Math.pow(1 - E180 / E10, 2) / Math.pow(E164 / E170, 2);
        paramMap.put("TE185", E185);
        return E185;
    }

    private Double calculateTE164() {
        Double E164;
        Double E4 = paramMap.get("TE4");
        Double E7 = paramMap.get("TE7");
        Double E9 = paramMap.get("TE9");
        Double E5 = paramMap.get("TE5");
        Double E6 = paramMap.get("TE6");
        if (E4.equals(1.0)) {
            E164 = Math.PI * Math.pow(E7 - 2 * E9, 2) / 4000000;
        } else {
            E164 = (E5 - 2 * E9) * (E6 - 2 * E9) / 1000000;
        }
        paramMap.put("TE164", E164);
        return E164;
    }

    private Double calculateTE192() {
        Double E179 = paramMap.get("TE179");
        Double E175 = paramMap.get("TE175");
        Double E6 = paramMap.get("TE6");
        Double E181 = paramMap.get("TE181");
        Double E15 = paramMap.get("TE15");
        Double E192;
        if (E179.equals(90) && (E175 / E6) > 0.7) {
            E192 = 0.34 + Math.pow(E181 / E15, 2) / Math.pow(E181 / E15, 2);
        } else {
            E192 = (1 + Math.pow(E181 / E15, 2) - 2 * E181 / E15 * Math.cos(E179 * Math.PI / 180)) / Math.pow(E181 / E15, 2);
        }
        paramMap.put("TE192", E192);
        return E192;
    }

    private Double calculateTE170() {
        Double E170;
        Double E165 = paramMap.get("TE165");
        Double E166 = paramMap.get("TE166");
        Double E167 = paramMap.get("TE167");
        Double E168 = paramMap.get("TE168");
        Double E169 = paramMap.get("TE169");
        if (E165 == 1) {
            E170 = Math.PI * Math.pow((E168 - 2 * E169), 2) / 4000000;
        } else {
            E170 = (E166 - 2 * E169) * (E167 - 2 * E169) / 1000000;
        }
        paramMap.put("TE170", E170);
        return E170;
    }

    private Double calculateTE178() {
        Double E178;
        Double E173 = paramMap.get("TE173");
        Double E176 = paramMap.get("TE176");
        Double E177 = paramMap.get("TE177");
        Double E174 = paramMap.get("TE174");
        Double E175 = paramMap.get("TE175");
        if (E173 == 1) {
            E178 = Math.PI * Math.pow((E176 - 2 * E177), 2) / 4000000;
        } else {
            E178 = (E174 - 2 * E177) * (E175 - 2 * E177) / 1000000;
        }
        paramMap.put("TE178", E178);
        return E178;
    }

    private Double calculateTE240() {
        Double E240;
        Double E4 = paramMap.get("TE4");
        Double E5 = paramMap.get("TE5");
        Double E6 = paramMap.get("TE6");
        Double E7 = paramMap.get("TE7");
        Double E9 = paramMap.get("TE9");
        if (E4.equals(1.0)) {
            E240 = Math.PI * Math.pow((E7 - 2 * E9), 2) / 4000000;
        } else {
            E240 = (E5 - 2 * E9) * (E6 - 2 * E9) / 1000000;
        }
        paramMap.put("TE240", E240);
        return E240;
    }

    private Double calculateTE246() {
        Double E246;
        Double E16 = paramMap.get("TE16");
        Double E242 = paramMap.get("TE242");
        Double E238 = paramMap.get("TE238");
        Double E244 = paramMap.get("TE244");
        if (E238 == null)
            return null;
        if (E16 == null)
            E16 = calculate("TE16");
        if (E242 == null)
            E242 = calculate("TE242");
        if (E244 == null)
            E244 = calculate("TE244");
        if (0 < E242 && E242 < 0.3) {
            E246 = 2.63 - 0.54 * E244;
        } else if (0.3 <= E242 && E242 < 0.6) {
            E246 = 2.28 - 0.51 * E244 + 0.4 * E242 + 0.0066 * E238 / E16 - 0.0015 * E244 * E238 / E16;
        } else {
            E246 = 2.2 - 0.57 * E244 + 0.6 * E242 + 0.0086 * E238 / E16 - 0.002 * E244 * E238 / E16;
        }
        paramMap.put("TE246", E246);
        return E246;
    }

    private Double calculateTE247() {
        Double E247;
        Double E245 = paramMap.get("TE245");
        Double E242 = paramMap.get("TE242");
        if (E242 == null)
            E242 = calculate("TE242");
        if (E245 == null)
            E245 = calculate("TE245");
        E247 = 1 / Math.pow(Math.tanh(0.09 + 0.5 * E245 + 0.02 * E242 - 0.09 * E245 * E242), 2) - 1;
        paramMap.put("TE247", E247);
        return E247;
    }

    private Double calculateTE248() {
        Double E248;
        Double E237 = paramMap.get("TE237");
        E248 = E237.equals(1.0) ? calculateTE246() : calculateTE247();
        paramMap.put("TE248", E248);
        return E248;
    }

    private Double calculateTE205() {
        Double E205;
        Double E4 = paramMap.get("TE4");
        Double E7 = paramMap.get("TE7");
        Double E9 = paramMap.get("TE9");
        Double E5 = paramMap.get("TE5");
        Double E6 = paramMap.get("TE6");
        Double E200 = paramMap.get("TE200");
        if (E9 == null || E200 == null)
            return null;
        if (E4.equals(1.0)) {
            if (E7 == null)
                return null;
            E205 = Math.PI * (E7 - 2 * (E9 + E200)) / 4;
        } else {
            if (E5 == null || E6 == null)
                return null;
            E205 = (E5 - 2 * (E9 + E200)) * (E6 - 2 * (E9 + E200)) / 1000000;
        }
        paramMap.put("TE205", E205);
        return E205;
    }

    private Double calculateTE204() {
        Double E204;
        Double E7 = paramMap.get("TE7");
        Double E4 = paramMap.get("TE4");
        Double E6 = paramMap.get("TE6");
        Double E200 = paramMap.get("TE200");
        Double E201 = paramMap.get("TE201");
        Double E202 = paramMap.get("TE202");
        if (E200 == null || E201 == null || E202 == null)
            return null;
        if (E4.equals(1.0)) {
            if (E7 == null)
                return null;
            E204 = (E7 - 2 * E200) * E201 * E202 / 1000000;
        } else {
            if (E6 == null)
                return null;
            E204 = (E6 - 2 * E200) * E201 * E202 / 1000000;
        }
        paramMap.put("TE204", E204);
        return E204;
    }

    private Double calculateTE209() {
        Double E209;
        Double E208 = paramMap.get("TE208");
        if (E208 == null)
            return null;
        if (E208 >= 0 && E208 <= 3) {
            E209 = 1.56 - 1.73619 * E208 + 0.88571 * Math.pow(E208, 2) - 0.10667 * Math.pow(E208, 3);
        }
        if (E208 > 3 && E208 <= 50) {
            E209 = 1.39108 + 0.02743 * E208 - 0.000343579 * Math.pow(E208, 2) + 0.000000768517 * Math.pow(E208, 3);
        } else {
            E209 = 1.97254 - 0.000731481 * E208 + 0.0000345238 * Math.pow(E208, 2) - 0.000000185185 * Math.pow(E208, 3);
        }
        paramMap.put("TE209", E209);
        return E209;
    }

    private Double calculateTE199() {
        return paramMap.get("TE27");
    }

    private Double calculateTE214() {
        Double E214;
        Double E4 = paramMap.get("TE4");
        if (E4 == 1) {
            E214 = calculate("TE214_1");
        } else {
            E214 = calculate("TE214_2");
        }
        paramMap.put("TE214", E214);
        return E214;
    }

    private Double calculateTE23() {
        Double E23;
        Double E16 = paramMap.get("TE16");
        Double E18 = paramMap.get("TE18");
        Double E21 = paramMap.get("TE21");
        if (E21 < 560 / (E18 / E16)) {
            E23 = calculate("TE23_1");
        } else {
            E23 = calculate("TE23_2");
        }
        paramMap.put("TE23", E23);
        return E23;
    }

    private Double calculateTe17() {
        Double E17;
        Double E4 = paramMap.get("TE4");
        if (E4 == 1) {
            E17 = calculate("TE17_1");
        } else {
            E17 = calculate("TE17_2");
        }
        paramMap.put("TE17", E17);
        return E17;
    }

    private Double calculateTE16() {
        Double E16;
        Double E4 = paramMap.get("TE4");
        if (E4 == 1) {
            E16 = calculate("TE16_1");
        } else {
            E16 = calculate("TE16_2");
        }
        paramMap.put("TE16", E16);
        return E16;
    }

    private Double calculateTE15() {
        Double E15;
        Double E4 = paramMap.get("TE4");
        if (E4 == 1) {
            E15 = calculate("TE15_1");
        } else {
            E15 = calculate("TE15_2");
        }
        paramMap.put("TE15", E15);
        return E15;
    }

    private Double calculateTE8() {
        Double E8;
        Double E4 = paramMap.get("TE4");
        Double E5 = paramMap.get("TE5");
        Double E6 = paramMap.get("TE6");
        Double E7 = paramMap.get("TE7");
        if (E4 == 1) {
            E8 = E7;
        } else {
            E8 = 2 * E5 * E6 / (E5 + E6);
        }
        paramMap.put("TE8", E8);
        return E8;
    }

    private Double calculateTE233() {
        Double E233;
        Double E4 = paramMap.get("TE4");
        Double E224 = paramMap.get("TE224");
        Double E232 = paramMap.get("TE232");
        if (E4 == 1) {
            E233 = E224;
        } else {
            E233 = E232;
        }
        paramMap.put("TE233", E233);
        return E233;
    }

    private Double calculateTE232() {
        Double E232;
        Double E231 = paramMap.get("TE231");
        Double E225 = paramMap.get("TE225");
        Double E226 = paramMap.get("TE226");
        Double E227 = paramMap.get("TE227");
        Double E228 = paramMap.get("TE228");
        Double E229 = paramMap.get("TE229");
        Double E230 = paramMap.get("TE230");
        if (E231 == 1) {
            E232 = E225;
        } else if (E231 == 2) {
            E232 = E226;
        } else if (E231 == 3) {
            E232 = E227;
        } else if (E231 == 4) {
            E232 = E228;
        } else if (E231 == 5) {
            E232 = E229;
        } else {
            E232 = E230;
        }
        paramMap.put("TE232", E232);
        return E232;
    }

    private Double calculateTE103() {
        Double E103;
        Double E4 = paramMap.get("TE4");
        Double E7 = paramMap.get("TE7");
        Double E9 = paramMap.get("TE9");
        Double E17 = paramMap.get("TE17");
        Double E20 = paramMap.get("TE20");
        if (E4 == 1) {
            E103 = 3.1415926 * (E7 - 2 * E9) * (E7 - 2 * E9) / 4;
        } else {
            E103 = E17 * E20;
        }
        paramMap.put("TE103", E103);
        return E103;

    }

    private Double calculateTE104() {
        Double E104;
        Double E93 = paramMap.get("TE93");
        Double E96 = paramMap.get("TE96");
        Double E98 = paramMap.get("TE98");
        Double E100 = paramMap.get("TE100");
        Double E101 = paramMap.get("TE101");
        if (E93 == 1) {
            E104 = 3.1415926 * (E96 - 2 * E98) * (E96 - 2 * E98) / 4;
        } else {
            E104 = E100 * E101;
        }
        paramMap.put("TE104", E104);
        return E104;
    }

    private Double calculateTE100() {
        Double E100;
        Double E93 = paramMap.get("TE93");
        Double E96 = paramMap.get("TE96");
        Double E98 = paramMap.get("TE98");
        Double E94 = paramMap.get("TE94");
        if (E93 == 1) {
            E100 = E96 - 2 * E98;
        } else {
            E100 = E94 - 2 * E98;
        }
        paramMap.put("TE100", E100);
        return E100;
    }

    private Double calculateTE101() {
        Double E101;
        Double E93 = paramMap.get("TE93");
        Double E96 = paramMap.get("TE96");
        Double E98 = paramMap.get("TE98");
        Double E95 = paramMap.get("TE95");
        if (E93 == 1) {
            E101 = E96 - 2 * E98;
        } else {
            E101 = E95 - 2 * E98;
        }
        paramMap.put("TE101", E101);
        return E101;
    }

    private Double calculateTE110() {
        Double E110;
        Double E108 = paramMap.get("TE108");
        if (0 <= E108 && E108 <= 12) {
            E110 = 0.66 + 0.11 * E108;
        } else {
            E110 = 2.32 - 0.0275 * E108;
        }
        paramMap.put("TE110", E110);
        return E110;
    }

    private Double calculateTE115() {
        Double E115;
        Double E103 = paramMap.get("TE103");
        Double E104 = paramMap.get("TE104");
        Double E112 = paramMap.get("TE112");
        Double E113 = paramMap.get("TE113");
        Double E114 = paramMap.get("TE114");
        if (E103 < E104)
            E115 = E112 + E114;
        else
            E115 = E113 + E114;
        paramMap.put("TE115", E115);
        return E115;
    }

    private Double calculateTE145() {
        Double E145;
        Double E143 = paramMap.get("TE143");
        if (0 <= E143 && E143 <= 12) {
            E145 = 0.66 + 0.11 * E143;
        } else {
            E145 = 2.32 - 0.0275 * E143;
        }
        paramMap.put("TE145", E145);
        return E145;
    }

    private Double calculateTE150() {
        Double E150;
        Double E103 = paramMap.get("TE103");
        Double E104 = paramMap.get("TE104");
        Double E147 = paramMap.get("TE147");
        Double E149 = paramMap.get("TE149");
        Double E148 = paramMap.get("TE148");
        if (E103 < E104)
            E150 = E147 + E149;
        else
            E150 = E148 + E149;
        paramMap.put("TE150", E150);
        return E150;
    }

    private Double calculateTE155() {
        Double E155;
        Double E153 = paramMap.get("TE153");
        if (0 <= E153 && E153 <= 12) {
            E155 = 0.66 + 0.11 * E153;
        } else {
            E155 = 2.32 - 0.0275 * E153;
        }
        paramMap.put("TE155", E155);
        return E155;
    }

    private Double calculateTE160() {
        Double E160;
        Double E103 = paramMap.get("TE103");
        Double E104 = paramMap.get("TE104");
        Double E157 = paramMap.get("TE157");
        Double E159 = paramMap.get("TE159");
        Double E158 = paramMap.get("TE158");
        if (E103 < E104)
            E160 = E157 + E159;
        else
            E160 = E158 + E159;
        paramMap.put("TE160", E160);
        return E160;
    }

    private Double calculateTE140() {
        Double E140;
        Double E103 = paramMap.get("TE103");
        Double E104 = paramMap.get("TE104");
        Double E136 = paramMap.get("TE136");
        Double E138 = paramMap.get("TE138");
        Double E137 = paramMap.get("TE137");
        Double E139 = paramMap.get("TE139");
        if (E103 < E104)
            E140 = E136 + E138;
        else
            E140 = E137 + E139;
        paramMap.put("TE140", E140);
        return E140;
    }

    private Double calculateTE139() {
        Double E139;
        Double E17 = paramMap.get("TE17");
        Double E24 = paramMap.get("TE24");
        Double E20 = paramMap.get("TE20");
        Double E100 = paramMap.get("TE100");
        Double E131 = paramMap.get("TE131");
        Double E130 = paramMap.get("TE130");
        Double E101 = paramMap.get("TE101");
        if (E17 == E100 || E131 == 0) {
            E139 = E24 / 4 / Math.sin(E130 / 2 * 3.1415926 / 180) * (E101 / E100 * (1 - E100 * E101 / E17 / E20) + 0.5 * (1 - (E100 * E101 / E17 / E20) * (E100 * E101 / E17 / E20)));
        } else if (E20 == E101 || E130 == 0) {
            E139 = E24 / 4 / Math.sin(E131 / 2 * 3.1415926 / 180) * (E100 / E101 * (1 - E100 * E101 / E17 / E20) + 0.5 * (1 - (E100 * E101 / E17 / E20) * (E100 * E101 / E17 / E20)));
        } else
            E139 = 0.0;
        paramMap.put("TE139", E139);
        return E139;
    }

    private Double calculateTE138() {
        Double E138;
        Double E17 = paramMap.get("TE17");
        Double E24 = paramMap.get("TE24");
        Double E20 = paramMap.get("TE20");
        Double E100 = paramMap.get("TE100");
        Double E131 = paramMap.get("TE131");
        Double E130 = paramMap.get("TE130");
        Double E101 = paramMap.get("TE101");
        if (E17 == E100 || E131 == 0) {
            E138 = E24 / 4 / Math.sin(E130 / 2 * 3.1415926 / 180) * (E20 / E17 * (1 - E17 * E20 / E100 / E101) + 0.5 * (1 - (E17 * E20 / E100 / E101) * (E17 * E20 / E100 / E101)));
        } else if (E20 == E101 || E130 == 0) {
            E138 = E24 / 4 / Math.sin(E131 / 2 * 3.1415926 / 180) * (E17 / E20 * (1 - E17 * E20 / E100 / E101) + 0.5 * (1 - (E17 * E20 / E100 / E101) * (E17 * E20 / E100 / E101)));
        } else
            E138 = 0.0;
        paramMap.put("TE138", E138);
        return E138;
    }

    private Double calculateTE134() {
        Double E134;
        Double E132 = paramMap.get("TE132");
        if (0 <= E132 && E132 <= 12) {
            E134 = 0.66 + 0.11 * E132;
        } else {
            E134 = 2.32 - 0.0275 * E132;
        }
        paramMap.put("TE134", E134);
        return E134;
    }

    private Double calculateTE122() {
        Double E122;
        Double E120 = paramMap.get("TE120");
        if (0 <= E120 && E120 <= 12) {
            E122 = 0.66 + 0.11 * E120;
        } else {
            E122 = 2.32 - 0.0275 * E120;
        }
        paramMap.put("TE122", E122);
        return E122;
    }

    private Double calculateTE126() {
        Double E126;
        Double E104 = paramMap.get("TE104");
        Double E103 = paramMap.get("TE103");
        Double E24 = paramMap.get("TE24");
        Double E118 = paramMap.get("TE118");
        Double E100 = paramMap.get("TE100");
        Double E101 = paramMap.get("TE101");
        Double E119 = paramMap.get("TE119");
        Double E17 = paramMap.get("TE17");
        Double E20 = paramMap.get("TE20");
        if (E104 > E103) {
            E126 = E24 / 16 / Math.sin(E118 / 2 * 3.1415926 / 180) * (1 - (E17 * E20 / E100 / E101) * (E17 * E20 / E100 / E101)) + E24 / 16 / Math.sin(E119 / 2 * 3.1415926 / 180) * (1 - (E17 * E20 / E100 / E101) * (E17 * E20 / E100 / E101));
        } else {
            E126 = E24 / 16 / Math.sin(E118 / 2 * 3.1415926 / 180) * (1 - (E100 * E101 / E17 / E20) * (E100 * E101 / E17 / E20)) + E24 / 16 / Math.sin(E119 / 2 * 3.1415926 / 180) * (1 - (E100 * E101 / E17 / E20) * (E100 * E101 / E17 / E20));
        }
        paramMap.put("TE126", E126);
        return E126;
    }

    private Double calculateTE127() {
        Double E127;
        Double E103 = paramMap.get("TE103");
        Double E104 = paramMap.get("TE104");
        Double E124 = paramMap.get("TE124");
        Double E125 = paramMap.get("TE125");
        Double E126 = paramMap.get("TE126");
        if (E103 < E104)
            E127 = E124 + E126;
        else
            E127 = E125 + E126;
        paramMap.put("TE127", E127);
        return E127;
    }

    private Double calculateTE149() {
        Double E149;
        Double E103 = paramMap.get("TE103");
        Double E104 = paramMap.get("TE104");
        Double E143 = paramMap.get("TE143");
        Double E7 = paramMap.get("TE7");
        Double E9 = paramMap.get("TE9");
        Double E100 = paramMap.get("TE100");
        Double E101 = paramMap.get("TE101");
        Double E24 = paramMap.get("TE24");
        if (E104 > E103) {
            E149 = E24 / 8 / Math.sin(E143 / 2 * 3.1415926 / 180) * (1 - (3.1415926 * (E7 - 2 * E9) * (E7 - 2 * E9) / 4 / E100 / E101) * (3.1415926 * (E7 - 2 * E9) * (E7 - 2 * E9) / 4 / E100 / E101));
        } else {
            E149 = E24 / 8 / Math.sin(E143 / 2 * 3.1415926 / 180) * (1 - (E100 * E101 / (3.1415926 * (E7 - 2 * E9) * (E7 - 2 * E9) / 4)) * (E100 * E101 / (3.1415926 * (E7 - 2 * E9) * (E7 - 2 * E9) / 4)));
        }
        paramMap.put("TE149", E149);
        return E149;
    }

    private Double calculateTE159() {
        Double E159;
        Double E103 = paramMap.get("TE103");
        Double E104 = paramMap.get("TE104");
        Double E17 = paramMap.get("TE17");
        Double E24 = paramMap.get("TE24");
        Double E153 = paramMap.get("TE153");
        Double E20 = paramMap.get("TE20");
        Double E96 = paramMap.get("TE96");
        Double E98 = paramMap.get("TE98");
        if (E104 > E103) {
            E159 = E24 / 8 / Math.sin(E153 / 2 * 3.1415926 / 180) * (1 - (E17 * E20 / (3.1415926 * (E96 - 2 * E98) * (E96 - 2 * E98) / 4)) * (E17 * E20 / (3.1415926 * (E96 - 2 * E98) * (E96 - 2 * E98) / 4)));
        } else {
            E159 = E24 / 8 / Math.sin(E153 / 2 * 3.1415926 / 180) * (1 - (3.1415926 * (E96 - 2 * E98) * (E96 - 2 * E98) / 4 / E20 / E17) * (3.1415926 * (E96 - 2 * E98) * (E96 - 2 * E98) / 4 / E20 / E17));
        }
        paramMap.put("TE159", E159);
        return E159;
    }

    private Double calculateTE99() {
        Double E99;
        Double E93 = paramMap.get("TE93");
        Double E97 = paramMap.get("TE97");
        Double E98 = paramMap.get("TE98");
        Double E94 = paramMap.get("TE94");
        Double E95 = paramMap.get("TE95");
        if (E93 == 1) {
            E99 = E97 - 2 * E98;
        } else {
            E99 = 2 * (E94 - 2 * E98) * (E95 - 2 * E98) / (E94 + E95 - 4 * E98);
        }
        paramMap.put("TE99", E99);
        return E99;
    }

    private Double calculateTE97() {
        Double E97;
        Double E93 = paramMap.get("TE93");
        Double E96 = paramMap.get("TE96");
        Double E94 = paramMap.get("TE94");
        Double E95 = paramMap.get("TE95");
        if (E93 == 1) {
            E97 = E96;
        } else {
            E97 = 2 * E94 * E95 / (E94 + E95);
        }
        paramMap.put("TE97", E97);
        return E97;
    }

    private Double calculateTE114() {
        Double E114;
        Double E24 = paramMap.get("TE24");
        Double E108 = paramMap.get("TE108");
        Double E16 = paramMap.get("TE16");
        Double E99 = paramMap.get("TE99");
        Double min = Math.min(E16, E99);
        Double max = Math.max(E16, E99);
        Double D = Math.pow(min, 2);
        Double D1 = Math.pow(max, 2);
        Double D2 = Math.pow(D / D1, 2);
        E114 = E24 / 8 / Math.sin(E108 / 2 * 3.1415926 / 180) * (1 - D2);
        paramMap.put("TE114", E114);
        return E114;
    }

    private Double calculateTE120() {
        Double E120;
        Double E119 = paramMap.get("TE119");
        Double E118 = paramMap.get("TE118");
        if (E119 > E118) {
            E120 = E119;
        } else
            E120 = E118;
        paramMap.put("TE120", E120);
        return E120;
    }


    private Double calculateTE132() {
        Double E132;
        Double E119 = paramMap.get("TE119");
        Double E118 = paramMap.get("TE118");
        if (E119 > E118) {
            E132 = E119;
        } else {
            E132 = E118;
        }
        paramMap.put("TE132", E132);
        return E132;
    }

    private Double calculateTe20() {
        Double E20;
        Double E4 = paramMap.get("TE4");
        Double E7 = paramMap.get("TE7");
        Double E6 = paramMap.get("TE6");
        Double E9 = paramMap.get("TE9");
        if (E4 == 1) {
            E20 = E7 - 2 * E9;
        } else {
            E20 = E6 - 2 * E9;
        }
        paramMap.put("TE20", E20);
        return E20;
    }


    public AjaxResponse transitionCal(Map<String, Double> paramMap) {
        AjaxResponse ajaxResponse = new AjaxResponse();
        Map map = new HashMap();
        Map<String, Formula> formulaMap = expressionService.getFormulaMapByType(12);
        Double E4 = paramMap.get("E4");
        //E8
        Double E8;
        double E5 = paramMap.get("E5");
        if (E4 == 1 || E4 == 3) {
            E8 = paramMap.get("E7");
        } else {
            double E6 = paramMap.get("E6");
            E8 = 2 * E5 * E6 / (E5 + E6);
        }
        paramMap.put("E8", E8);

        //E14
        double E14 = expressionService.getCalculateData(formulaMap.get("TE14"), paramMap);
        paramMap.put("E14", E14);
        //E15
        Double E15;
        if (E4 == 1 || E4 == 3) {
            E15 = expressionService.getCalculateData(formulaMap.get("TE15_1"), paramMap);
        } else {
            E15 = expressionService.getCalculateData(formulaMap.get("TE15_2"), paramMap);
        }
        if (paramMap.get("E15State") == 0) {
            paramMap.put("E15", E15);
        }
        //E16
        Double E16;
        if (E4 == 1 || E4 == 3) {
            E16 = expressionService.getCalculateData(formulaMap.get("TE16_1"), paramMap);
        } else {
            E16 = expressionService.getCalculateData(formulaMap.get("TE16_2"), paramMap);
        }
        paramMap.put("E16", E16);
        Double E17;
        if (E4 == 1 || E4 == 3) {
            E17 = expressionService.getCalculateData(formulaMap.get("TE17_1"), paramMap);
        } else {
            E17 = expressionService.getCalculateData(formulaMap.get("TE17_2"), paramMap);
        }
        paramMap.put("E17", E17);
        //E19
        double E19 = expressionService.getCalculateData(formulaMap.get("TE19"), paramMap);
        paramMap.put("E19", E19);
        //E20
        Double E20;
        Double E7 = paramMap.get("E7");
        Double E6 = paramMap.get("E6");
        Double E9 = paramMap.get("E9");
        if (E4 == 1) {
            E20 = E7 - 2 * E9;
        } else {
            E20 = E6 - 2 * E9;
        }
        paramMap.put("E20", E20);
        //E21
        double E21 = expressionService.getCalculateData(formulaMap.get("TE21"), paramMap);
        paramMap.put("E21", E21);
        //E22
        double E22;
        double E23;
        double E24;
        E22 = expressionService.getCalculateData(formulaMap.get("TE22"), paramMap);
        paramMap.put("E22", E22);
        //E23
        Double E18 = paramMap.get("E18");
        if (E21 < 560 / (E18 / E16)) {
            E23 = expressionService.getCalculateData(formulaMap.get("TE23_1"), paramMap);
        } else {
            E23 = expressionService.getCalculateData(formulaMap.get("TE23_2"), paramMap);
        }
        paramMap.put("E23", E23);
        E24 = expressionService.getCalculateData(formulaMap.get("TE24"), paramMap);
        paramMap.put("E24", E24);
        //E93
        Double E93 = E4;
        if (E4 == 2)
            E93 = 2.0;
        if (E4 == 3)
            E93 = 2.0;
        if (E4 == 4)
            E93 = 1.0;
        //E97
        Double E97;
        Double E96 = paramMap.get("E96");
        Double E94 = paramMap.get("E94");
        Double E95 = paramMap.get("E95");
        if (E93 == 1) {
            E97 = E96;
        } else {
            E97 = 2 * E94 * E95 / (E94 + E95);
        }
        paramMap.put("E97", E97);
        //E98
        double E98 = E9;
        paramMap.put("E98", E98);
        Double E99;
        if (E93 == 1) {
            E99 = E97 - 2 * E98;
        } else {
            E99 = 2 * (E94 - 2 * E98) * (E95 - 2 * E98) / (E94 + E95 - 4 * E98);
        }
        paramMap.put("E99", E99);
        //E100
        Double E100;
        if (E93 == 1) {
            E100 = E96 - 2 * E98;
        } else {
            E100 = E94 - 2 * E98;
        }
        paramMap.put("E100", E100);
        //101
        Double E101;
        if (E93 == 1) {
            E101 = E96 - 2 * E98;
        } else {
            E101 = E95 - 2 * E98;
        }
        paramMap.put("E101", E101);
        Double E103;
        if (E4 == 1) {
            E103 = 3.1415926 * (E7 - 2 * E9) * (E7 - 2 * E9) / 4;
        } else {
            E103 = E17 * E20;
        }
        paramMap.put("E103", E103);
        //e104
        Double E104;
        if (E93 == 1) {
            E104 = 3.1415926 * (E96 - 2 * E98) * (E96 - 2 * E98) / 4;
        } else {
            E104 = E100 * E101;
        }
        paramMap.put("E104", E104);
        //E105
        double E105 = expressionService.getCalculateData(formulaMap.get("TE105"), paramMap);
        paramMap.put("E105", E105);
        //E106
        double E106 = expressionService.getCalculateData(formulaMap.get("TE106"), paramMap);
        paramMap.put("E106", E106);
        //如果为圆形
        if (E4 == 1) {
            //E108
            double E108 = expressionService.getCalculateData(formulaMap.get("TE108"), paramMap);
            paramMap.put("E108", E108);
            //E109
            double E109 = expressionService.getCalculateData(formulaMap.get("TE109"), paramMap);
            paramMap.put("E109", E109);
            //E110
            double E110;
            if (0 <= E108 && E108 <= 12) {
                E110 = 0.66 + 0.11 * E108;
            } else {
                E110 = 2.32 - 0.0275 * E108;
            }
            paramMap.put("E110", E110);
            //E111
            double E111 = expressionService.getCalculateData(formulaMap.get("TE111"), paramMap);
            paramMap.put("E111", E111);
            //E112
            double E112 = expressionService.getCalculateData(formulaMap.get("TE112"), paramMap);
            paramMap.put("E112", E112);
            //E113
            double E113 = expressionService.getCalculateData(formulaMap.get("TE113"), paramMap);
            paramMap.put("E113", E113);
            //E114
            Double E114;
            Double min = Math.min(E16, E99);
            Double max = Math.max(E16, E99);
            Double D = Math.pow(min, 2);
            Double D1 = Math.pow(max, 2);
            Double D2 = Math.pow(D / D1, 2);
            E114 = E24 / 8 / Math.sin(E108 / 2 * 3.1415926 / 180) * (1 - D2);
            paramMap.put("E114", E114);
            //E115
            Double E115;
            if (E103 < E104)
                E115 = E112 + E114;
            else
                E115 = E113 + E114;
            paramMap.put("E115", E115);
            //E116
            double E116 = expressionService.getCalculateData(formulaMap.get("TE116"), paramMap);
            paramMap.put("E116", E116);
            paramMap.put("s1", NumberUtil.round(E108, 4));
            paramMap.put("s2", NumberUtil.round(E115, 4));
            paramMap.put("s3", NumberUtil.round(E116, 4));
            map.put("returnData", paramMap);
            ajaxResponse.setReturnData(map);
            return ajaxResponse;
        }
        if (E4 == 2) {
            //E118
            double E118 = expressionService.getCalculateData(formulaMap.get("TE118"), paramMap);
            paramMap.put("E118", E118);
            //E119
            double E119 = expressionService.getCalculateData(formulaMap.get("TE119"), paramMap);
            paramMap.put("E119", E119);
            if (E6 != E95 && E5 != E94) {
                Double E120;
                if (E119 > E118) {
                    E120 = E119;
                } else
                    E120 = E118;
                paramMap.put("E120", E120);
                //E121
                double E121 = expressionService.getCalculateData(formulaMap.get("TE121"), paramMap);
                paramMap.put("E121", E121);
                Double E122;
                if (0 <= E120 && E120 <= 12) {
                    E122 = 0.66 + 0.11 * E120;
                } else {
                    E122 = 2.32 - 0.0275 * E120;
                }
                paramMap.put("E122", E122);
                //E123
                double E123 = expressionService.getCalculateData(formulaMap.get("TE123"), paramMap);
                paramMap.put("E123", E123);
                //E124
                double E124 = expressionService.getCalculateData(formulaMap.get("TE124"), paramMap);
                paramMap.put("E124", E124);
                //E125
                double E125 = expressionService.getCalculateData(formulaMap.get("TE125"), paramMap);
                paramMap.put("E125", E125);
                //E126
                Double E126;
                if (E104 > E103) {
                    E126 = E24 / 16 / Math.sin(E118 / 2 * 3.1415926 / 180) * (1 - (E17 * E20 / E100 / E101) * (E17 * E20 / E100 / E101)) + E24 / 16 / Math.sin(E119 / 2 * 3.1415926 / 180) * (1 - (E17 * E20 / E100 / E101) * (E17 * E20 / E100 / E101));
                } else {
                    E126 = E24 / 16 / Math.sin(E118 / 2 * 3.1415926 / 180) * (1 - (E100 * E101 / E17 / E20) * (E100 * E101 / E17 / E20)) + E24 / 16 / Math.sin(E119 / 2 * 3.1415926 / 180) * (1 - (E100 * E101 / E17 / E20) * (E100 * E101 / E17 / E20));
                }
                paramMap.put("E126", E126);
                //E127
                Double E127;
                if (E103 < E104)
                    E127 = E124 + E126;
                else
                    E127 = E125 + E126;
                paramMap.put("E127", E127);
                //E128
                double E128 = expressionService.getCalculateData(formulaMap.get("TE128"), paramMap);
                paramMap.put("E128", E128);
                paramMap.put("s1", NumberUtil.round(E120, 4));
                paramMap.put("s2", NumberUtil.round(E127, 4));
                paramMap.put("s3", NumberUtil.round(E128, 4));
                map.put("returnData", paramMap);
                ajaxResponse.setReturnData(map);
                return ajaxResponse;

            } else {
                //E130
                double E130 = expressionService.getCalculateData(formulaMap.get("TE130"), paramMap);
                paramMap.put("E130", E130);
                //E131
                double E131 = expressionService.getCalculateData(formulaMap.get("TE131"), paramMap);
                paramMap.put("E131", E131);
                Double E132;
                if (E119 > E118) {
                    E132 = E119;
                } else {
                    E132 = E118;
                }
                paramMap.put("E132", E132);
                //E133
                double E133 = expressionService.getCalculateData(formulaMap.get("TE133"), paramMap);
                paramMap.put("E133", E133);
                //E134
                Double E134;
                if (0 <= E132 && E132 <= 12) {
                    E134 = 0.66 + 0.11 * E132;
                } else {
                    E134 = 2.32 - 0.0275 * E132;
                }
                paramMap.put("E134", E134);
                //E135
                double E135 = expressionService.getCalculateData(formulaMap.get("TE135"), paramMap);
                paramMap.put("E135", E135);
                //E136
                double E136 = expressionService.getCalculateData(formulaMap.get("TE136"), paramMap);
                paramMap.put("E136", E136);
                //E137
                double E137 = expressionService.getCalculateData(formulaMap.get("TE137"), paramMap);
                paramMap.put("E137", E137);
                Double E138;
                if (E17.equals(E100) || E131 == 0) {
                    E138 = E24 / 4 / Math.sin(E130 / 2 * 3.1415926 / 180) * (E20 / E17 * (1 - E17 * E20 / E100 / E101) + 0.5 * (1 - (E17 * E20 / E100 / E101) * (E17 * E20 / E100 / E101)));
                } else if (E20.equals(E101) || E130 == 0) {
                    E138 = E24 / 4 / Math.sin(E131 / 2 * 3.1415926 / 180) * (E17 / E20 * (1 - E17 * E20 / E100 / E101) + 0.5 * (1 - (E17 * E20 / E100 / E101) * (E17 * E20 / E100 / E101)));
                } else
                    E138 = 0.0;
                paramMap.put("E138", E138);
                Double E139;
                if (E17.equals(E100) || E131 == 0) {
                    E139 = E24 / 4 / Math.sin(E130 / 2 * 3.1415926 / 180) * (E101 / E100 * (1 - E100 * E101 / E17 / E20) + 0.5 * (1 - (E100 * E101 / E17 / E20) * (E100 * E101 / E17 / E20)));
                } else if (E20.equals(E101) || E130 == 0) {
                    E139 = E24 / 4 / Math.sin(E131 / 2 * 3.1415926 / 180) * (E100 / E101 * (1 - E100 * E101 / E17 / E20) + 0.5 * (1 - (E100 * E101 / E17 / E20) * (E100 * E101 / E17 / E20)));
                } else
                    E139 = 0.0;
                paramMap.put("E139", E139);
                Double E140;
                if (E103 < E104)
                    E140 = E136 + E138;
                else
                    E140 = E137 + E139;
                paramMap.put("E140", E140);
                //E141
                double E141 = expressionService.getCalculateData(formulaMap.get("TE141"), paramMap);
                paramMap.put("E141", E141);
                paramMap.put("s1", NumberUtil.round(E132, 4));
                paramMap.put("s2", NumberUtil.round(E140, 4));
                paramMap.put("s3", NumberUtil.round(E141, 4));
                map.put("returnData", paramMap);
                ajaxResponse.setReturnData(map);
                return ajaxResponse;
            }
        }
        if (E4 == 3) {
            double E143 = expressionService.getCalculateData6(formulaMap.get("TE143"), paramMap);
            paramMap.put("E143", E143);
            double E144 = expressionService.getCalculateData6(formulaMap.get("TE144"), paramMap);
            paramMap.put("E144", E144);
            Double E145;
            if (0 <= E143 && E143 <= 12) {
                E145 = 0.66 + 0.11 * E143;
            } else {
                E145 = 2.32 - 0.0275 * E143;
            }
            paramMap.put("E145", E145);
            double E146 = expressionService.getCalculateData6(formulaMap.get("TE146"), paramMap);
            paramMap.put("E146", E146);
            double E147 = expressionService.getCalculateData6(formulaMap.get("TE147"), paramMap);
            paramMap.put("E147", E147);
            double E148 = expressionService.getCalculateData6(formulaMap.get("TE148"), paramMap);
            paramMap.put("E148", E148);
            Double E149;
            if (E104 > E103) {
                E149 = E24 / 8 / Math.sin(E143 / 2 * 3.1415926 / 180) * (1 - (3.1415926 * (E7 - 2 * E9) * (E7 - 2 * E9) / 4 / E100 / E101) * (3.1415926 * (E7 - 2 * E9) * (E7 - 2 * E9) / 4 / E100 / E101));
            } else {
                E149 = E24 / 8 / Math.sin(E143 / 2 * 3.1415926 / 180) * (1 - (E100 * E101 / (3.1415926 * (E7 - 2 * E9) * (E7 - 2 * E9) / 4)) * (E100 * E101 / (3.1415926 * (E7 - 2 * E9) * (E7 - 2 * E9) / 4)));
            }
            paramMap.put("E149", E149);
            Double E150;
            if (E103 < E104)
                E150 = E147 + E149;
            else
                E150 = E148 + E149;
            paramMap.put("E150", E150);
            double E151 = expressionService.getCalculateData(formulaMap.get("TE151"), paramMap);
            paramMap.put("E151", E151);
            paramMap.put("s1", NumberUtil.round(E143, 4));
            paramMap.put("s2", NumberUtil.round(E150, 4));
            paramMap.put("s3", NumberUtil.round(E151, 4));
            map.put("returnData", paramMap);
            ajaxResponse.setReturnData(map);
            return ajaxResponse;
        }

        double E153 = expressionService.getCalculateData6(formulaMap.get("TE153"), paramMap);
        paramMap.put("E153", E153);
        double E154 = expressionService.getCalculateData6(formulaMap.get("TE154"), paramMap);
        paramMap.put("E154", E154);
        Double E155;
        if (0 <= E153 && E153 <= 12) {
            E155 = 0.66 + 0.11 * E153;
        } else {
            E155 = 2.32 - 0.0275 * E153;
        }
        paramMap.put("E155", E155);
        double E156 = expressionService.getCalculateData6(formulaMap.get("TE156"), paramMap);
        paramMap.put("E156", E156);
        double E157 = expressionService.getCalculateData6(formulaMap.get("TE157"), paramMap);
        paramMap.put("E157", E157);
        double E158 = expressionService.getCalculateData6(formulaMap.get("TE158"), paramMap);
        paramMap.put("E158", E158);
        Double E159;
        if (E104 > E103) {
            E159 = E24 / 8 / Math.sin(E153 / 2 * 3.1415926 / 180) * (1 - (E17 * E20 / (3.1415926 * (E96 - 2 * E98) * (E96 - 2 * E98) / 4)) * (E17 * E20 / (3.1415926 * (E96 - 2 * E98) * (E96 - 2 * E98) / 4)));
        } else {
            E159 = E24 / 8 / Math.sin(E153 / 2 * 3.1415926 / 180) * (1 - (3.1415926 * (E96 - 2 * E98) * (E96 - 2 * E98) / 4 / E20 / E17) * (3.1415926 * (E96 - 2 * E98) * (E96 - 2 * E98) / 4 / E20 / E17));
        }
        paramMap.put("E159", E159);
        Double E160;
        if (E103 < E104)
            E160 = E157 + E159;
        else
            E160 = E158 + E159;
        paramMap.put("E160", E160);
        double E161 = expressionService.getCalculateData6(formulaMap.get("TE161"), paramMap);
        paramMap.put("E161", E161);
        paramMap.put("s1", NumberUtil.round(E153, 4));
        paramMap.put("s2", NumberUtil.round(E160, 4));
        paramMap.put("s3", NumberUtil.round(E161, 4));
        map.put("returnData", paramMap);
        ajaxResponse.setReturnData(map);
        return ajaxResponse;
    }

    //阻力计算-直管段
    public AjaxResponse straightCal(Map<String, Double> paramMap) {
        AjaxResponse ajaxResponse = new AjaxResponse();
        Map map = new HashMap();
        Map<String, Formula> formulaMap = expressionService.getFormulaMapByType(12);
        Double E4 = paramMap.get("E4");
        //E8
        Double E8;
        double E5 = paramMap.get("E5");
        if (E4 == 1 || E4 == 3) {
            E8 = paramMap.get("E7");
        } else {
            double E6 = paramMap.get("E6");
            E8 = 2 * E5 * E6 / (E5 + E6);
        }
        paramMap.put("E8", E8);
        //E14
        double E14 = expressionService.getCalculateData(formulaMap.get("TE14"), paramMap);
        paramMap.put("E14", E14);
        //E15
        Double E15;
        if (E4 == 1 || E4 == 3) {
            E15 = expressionService.getCalculateData(formulaMap.get("TE15_1"), paramMap);
        } else {
            E15 = expressionService.getCalculateData(formulaMap.get("TE15_2"), paramMap);
        }
        if (paramMap.get("E15State") == 0) {
            paramMap.put("E15", E15);
        }
        //E16
        Double E16;
        if (E4 == 1 || E4 == 3) {
            E16 = expressionService.getCalculateData(formulaMap.get("TE16_1"), paramMap);
        } else {
            E16 = expressionService.getCalculateData(formulaMap.get("TE16_2"), paramMap);
        }
        paramMap.put("E16", E16);
        Double E17;
        if (E4 == 1 || E4 == 3) {
            E17 = expressionService.getCalculateData(formulaMap.get("TE17_1"), paramMap);
        } else {
            E17 = expressionService.getCalculateData(formulaMap.get("TE17_2"), paramMap);
        }
        paramMap.put("E17", E17);
        //E19
        double E19 = expressionService.getCalculateData(formulaMap.get("TE19"), paramMap);
        paramMap.put("E19", E19);
        //E20
        Double E20;
        Double E7 = paramMap.get("E7");
        Double E6 = paramMap.get("E6");
        Double E9 = paramMap.get("E9");
        if (E4 == 1) {
            E20 = E7 - 2 * E9;
        } else {
            E20 = E6 - 2 * E9;
        }
        paramMap.put("E20", E20);
        //E21
        double E21 = expressionService.getCalculateData(formulaMap.get("TE21"), paramMap);
        paramMap.put("E21", E21);
        //E22
        double E22;
        double E23;
        double E24;
        E22 = expressionService.getCalculateData(formulaMap.get("TE22"), paramMap);
        paramMap.put("E22", E22);
        //E23
        Double E18 = paramMap.get("E18");
        if (E21 < 560 / (E18 / E16)) {
            E23 = expressionService.getCalculateData(formulaMap.get("TE23_1"), paramMap);
        } else {
            E23 = expressionService.getCalculateData(formulaMap.get("TE23_2"), paramMap);
        }
        paramMap.put("E23", E23);
        E24 = expressionService.getCalculateData(formulaMap.get("TE24"), paramMap);
        paramMap.put("E24", E24);
        //E28
        double E28 = expressionService.getCalculateData(formulaMap.get("TE28"), paramMap);
        paramMap.put("E28", E28);
        //E29
        double E29 = expressionService.getCalculateData(formulaMap.get("TE29"), paramMap);
        paramMap.put("E29", E29);
        map.put("returnData", paramMap);
        ajaxResponse.setReturnData(map);
        return ajaxResponse;
    }

    public AjaxResponse innerCal(Map<String, Double> paramMap) {
        AjaxResponse ajaxResponse = new AjaxResponse();
        Map map = new HashMap();
        Map<String, Formula> formulaMap = expressionService.getFormulaMapByType(12);
        Double E4 = paramMap.get("E4");
        //E8
        Double E8;
        double E5 = paramMap.get("E5");
        if (E4 == 1 || E4 == 3) {
            E8 = paramMap.get("E7");
        } else {
            double E6 = paramMap.get("E6");
            E8 = 2 * E5 * E6 / (E5 + E6);
        }
        paramMap.put("E8", E8);
        //E14
        double E14 = expressionService.getCalculateData(formulaMap.get("TE14"), paramMap);
        paramMap.put("E14", E14);
        //E15
        Double E15;
        if (E4 == 1 || E4 == 3) {
            E15 = expressionService.getCalculateData(formulaMap.get("TE15_1"), paramMap);
        } else {
            E15 = expressionService.getCalculateData(formulaMap.get("TE15_2"), paramMap);
        }
        if (paramMap.get("E15State") == 0) {
            paramMap.put("E15", E15);
        }
        Double E16;
        if (E4 == 1 || E4 == 3) {
            E16 = expressionService.getCalculateData(formulaMap.get("TE16_1"), paramMap);
        } else {
            E16 = expressionService.getCalculateData(formulaMap.get("TE16_2"), paramMap);
        }
        paramMap.put("E16", E16);
        //E19
        double E19 = expressionService.getCalculateData(formulaMap.get("TE19"), paramMap);
        paramMap.put("E19", E19);
        //E21
        double E21 = expressionService.getCalculateData(formulaMap.get("TE21"), paramMap);
        paramMap.put("E21", E21);
        paramMap.put("E199", paramMap.get("E27"));
        //E204
        Double E204;
        Double E200 = paramMap.get("E200");
        Double E201 = paramMap.get("E201");
        Double E202 = paramMap.get("E202");
        Double E7 = paramMap.get("E7");
        Double E6 = paramMap.get("E6");
        Double E9 = paramMap.get("E9");
        if (E4.equals(1.0)) {
            E204 = (E7 - 2 * E200) * E201 * E202 / 1000000;
        } else {
            E204 = (E6 - 2 * E200) * E201 * E202 / 1000000;
        }
        paramMap.put("E204", E204);

        Double E205;
        if (E4.equals(1.0)) {
            E205 = Math.PI * (E7 - 2 * (E9 + E200)) / 4;
        } else {
            E205 = (E5 - 2 * (E9 + E200)) * (E6 - 2 * (E9 + E200)) / 1000000;
        }
        paramMap.put("E205", E205);
        //E206
        double E206 = expressionService.getCalculateData6(formulaMap.get("TE206"), paramMap);
        paramMap.put("E206", E206);
        //E207
        double E207 = expressionService.getCalculateData(formulaMap.get("TE207"), paramMap);
        paramMap.put("E207", E207);
        //E208
        double E208 = expressionService.getCalculateData(formulaMap.get("TE208"), paramMap);
        paramMap.put("E208", E208);

        Double E209;
        if (E208 >= 0 && E208 <= 3) {
            E209 = 1.56 - 1.73619 * E208 + 0.88571 * Math.pow(E208, 2) - 0.10667 * Math.pow(E208, 3);
        }
        if (E208 > 3 && E208 <= 50) {
            E209 = 1.39108 + 0.02743 * E208 - 0.000343579 * Math.pow(E208, 2) + 0.000000768517 * Math.pow(E208, 3);
        } else {
            E209 = 1.97254 - 0.000731481 * E208 + 0.0000345238 * Math.pow(E208, 2) - 0.000000185185 * Math.pow(E208, 3);
        }
        paramMap.put("E209", E209);
        //E210
        double E210 = expressionService.getCalculateData6(formulaMap.get("TE210"), paramMap);
        paramMap.put("E210", E210);
        //E211
        double E211 = expressionService.getCalculateData6(formulaMap.get("TE211"), paramMap);
        paramMap.put("E211", E211);
        map.put("returnData", paramMap);
        ajaxResponse.setReturnData(map);
        return ajaxResponse;
    }

    public AjaxResponse airDoorCal(Map<String, Double> paramMap) {
        AjaxResponse ajaxResponse = new AjaxResponse();
        Map map = new HashMap();
        Map<String, Formula> formulaMap = expressionService.getFormulaMapByType(12);
        Double E4 = paramMap.get("E4");
        //E8
        Double E8;
        double E5 = paramMap.get("E5");
        if (E4 == 1 || E4 == 3) {
            E8 = paramMap.get("E7");
        } else {
            double E6 = paramMap.get("E6");
            E8 = 2 * E5 * E6 / (E5 + E6);
        }
        paramMap.put("E8", E8);
        //E14
        double E14 = expressionService.getCalculateData(formulaMap.get("TE14"), paramMap);
        paramMap.put("E14", E14);
        //E15
        Double E15;
        if (E4 == 1 || E4 == 3) {
            E15 = expressionService.getCalculateData(formulaMap.get("TE15_1"), paramMap);
        } else {
            E15 = expressionService.getCalculateData(formulaMap.get("TE15_2"), paramMap);
        }
        if (paramMap.get("E15State") == 0) {
            paramMap.put("E15", E15);
        }
        Double E16;
        if (E4 == 1 || E4 == 3) {
            E16 = expressionService.getCalculateData(formulaMap.get("TE16_1"), paramMap);
        } else {
            E16 = expressionService.getCalculateData(formulaMap.get("TE16_2"), paramMap);
        }
        paramMap.put("E16", E16);
        //E19
        double E19 = expressionService.getCalculateData(formulaMap.get("TE19"), paramMap);
        paramMap.put("E19", E19);
        //E21
        double E21 = expressionService.getCalculateData(formulaMap.get("TE21"), paramMap);
        paramMap.put("E21", E21);

        //E222
        double E222 = expressionService.getCalculateData(formulaMap.get("TE222"), paramMap);
        paramMap.put("E222", E222);
        //E222
        double E223 = expressionService.getCalculateData(formulaMap.get("TE223"), paramMap);
        paramMap.put("E223", E223);
        if (E4 == 1) {
            double E224 = expressionService.getCalculateData(formulaMap.get("TE224"), paramMap);
            paramMap.put("E224", E224);
            paramMap.put("E233", E224);
            double E234 = expressionService.getCalculateData(formulaMap.get("TE234"), paramMap);
            paramMap.put("E234", E234);
            map.put("returnData", paramMap);
            ajaxResponse.setReturnData(map);
            return ajaxResponse;
        }
        double E231 = paramMap.get("E231");
        if (E231 == 1) {
            paramMap.put("E233", expressionService.getCalculateData(formulaMap.get("TE225"), paramMap));
        } else if (E231 == 2) {
            paramMap.put("E233", expressionService.getCalculateData(formulaMap.get("TE226"), paramMap));
        } else if (E231 == 3) {
            paramMap.put("E233", expressionService.getCalculateData(formulaMap.get("TE227"), paramMap));
        } else if (E231 == 4) {
            paramMap.put("E233", expressionService.getCalculateData(formulaMap.get("TE228"), paramMap));
        } else if (E231 == 5) {
            paramMap.put("E233", expressionService.getCalculateData(formulaMap.get("TE229"), paramMap));
        } else if (E231 == 6) {
            paramMap.put("E233", expressionService.getCalculateData(formulaMap.get("TE230"), paramMap));
        }
        double E234 = expressionService.getCalculateData(formulaMap.get("TE234"), paramMap);
        paramMap.put("E234", E234);
        map.put("returnData", paramMap);
        ajaxResponse.setReturnData(map);
        return ajaxResponse;
    }

    public AjaxResponse headerCal(Map<String, Double> paramMap) {
        AjaxResponse ajaxResponse = new AjaxResponse();
        Map map = new HashMap();
        Map<String, Formula> formulaMap = expressionService.getFormulaMapByType(12);
        Double E4 = paramMap.get("E4");
        //E8
        Double E8;
        double E5 = paramMap.get("E5");
        if (E4 == 1 || E4 == 3) {
            E8 = paramMap.get("E7");
        } else {
            double E6 = paramMap.get("E6");
            E8 = 2 * E5 * E6 / (E5 + E6);
        }
        paramMap.put("E8", E8);
        //E14
        double E14 = expressionService.getCalculateData(formulaMap.get("TE14"), paramMap);
        paramMap.put("E14", E14);
        //E15
        Double E15;
        if (E4 == 1 || E4 == 3) {
            E15 = expressionService.getCalculateData(formulaMap.get("TE15_1"), paramMap);
        } else {
            E15 = expressionService.getCalculateData(formulaMap.get("TE15_2"), paramMap);
        }
        if (paramMap.get("E15State") == 0) {
            paramMap.put("E15", E15);
        }
        Double E16;
        if (E4 == 1 || E4 == 3) {
            E16 = expressionService.getCalculateData(formulaMap.get("TE16_1"), paramMap);
        } else {
            E16 = expressionService.getCalculateData(formulaMap.get("TE16_2"), paramMap);
        }
        paramMap.put("E16", E16);
        //E19
        double E19 = expressionService.getCalculateData(formulaMap.get("TE19"), paramMap);
        paramMap.put("E19", E19);
        //E21
        double E21 = expressionService.getCalculateData(formulaMap.get("TE21"), paramMap);
        paramMap.put("E21", E21);
        //
        Double E240;
        Double E6 = paramMap.get("E6");
        Double E7 = paramMap.get("E7");
        Double E9 = paramMap.get("E9");
        if (E4.equals(1.0)) {
            E240 = Math.PI * Math.pow((E7 - 2 * E9), 2) / 4000000;
        } else {
            E240 = (E5 - 2 * E9) * (E6 - 2 * E9) / 1000000;
        }
        paramMap.put("E240", E240);

        //E242
        double E242 = expressionService.getCalculateData(formulaMap.get("TE242"), paramMap);
        paramMap.put("E242", E242);
        //E243
        double E243 = expressionService.getCalculateData(formulaMap.get("TE243"), paramMap);
        paramMap.put("E243", E243);
        //E244
        double E244 = expressionService.getCalculateData(formulaMap.get("TE244"), paramMap);
        paramMap.put("E244", E244);
        //E245
        double E245 = expressionService.getCalculateData(formulaMap.get("TE245"), paramMap);
        paramMap.put("E245", E245);
        //E248
        double E248;
        double E237 = paramMap.get("E237");
        if (E237 == 1) {
            Double E246;
            Double E238 = paramMap.get("E238");
            if (E238 == null)
                return null;
            if (E16 == null)
                E16 = calculate("TE16");
            if (0 < E242 && E242 < 0.3) {
                E246 = 2.63 - 0.54 * E244;
            } else if (0.3 <= E242 && E242 < 0.6) {
                E246 = 2.28 - 0.51 * E244 + 0.4 * E242 + 0.0066 * E238 / E16 - 0.0015 * E244 * E238 / E16;
            } else {
                E246 = 2.2 - 0.57 * E244 + 0.6 * E242 + 0.0086 * E238 / E16 - 0.002 * E244 * E238 / E16;
            }
            E248 = E246;
        } else {
            E248 = expressionService.getCalculateData(formulaMap.get("TE247"), paramMap);
        }
        paramMap.put("E248", NumberUtil.round(E248,4));
        //E249
        double E249 = expressionService.getCalculateData(formulaMap.get("TE249"), paramMap);
        paramMap.put("E249", E249);
        map.put("returnData", paramMap);
        ajaxResponse.setReturnData(map);
        return ajaxResponse;
    }
}
